package com.gadgets.framework.common.validator;

import com.gadgets.framework.common.constant.GadgetsExceptionConstant;
import com.gadgets.framework.common.exception.GadgetsValidateException;
import org.springframework.util.StringUtils;

/**
 * @author UncleXiu
 * @version V1.0.0
 * @data 2020-09-21
 *
 */
public abstract class AbstractBusiValidateTrigger<T> implements IValidteTrigger<T>{

    /**
     * 校验执行方法
     *
     * @param target 目标对象
     *
     * @throws GadgetsValidateException 校验异常
     */
    @Override
    public void excute(T target) throws GadgetsValidateException {
        String validate = validate(target);
        if(!StringUtils.isEmpty(validate)){
            throw new GadgetsValidateException(GadgetsExceptionConstant.VALIDATE_ERROR,validate);
        }
    }

    /**
     * 校验执行器
     * @param target                    目标对象
     * @return                          校验不通过信息
     * @throws GadgetsValidateException 校验异常
     */
    public abstract String validate(T target) throws GadgetsValidateException;

}
